#include <iostream>
using namespace std;

/*
	函数重载：在同一个作用域中，函数名相同，但参数列表不同(个数、类型、顺序)的批量函数.
		函数的返回值不影响函数的重载

	重载函数的匹配调用:
		1 无匹配		找不到匹配的函数
		2 最佳匹配		实际参数和形式参数严格一致----->寻找实际参数可以与形式参数发生转化的匹配
		3 二义性匹配	没有最佳匹配，并可选匹配项有多个时
*/

int func(int)
{
	cout << "func(int)" << endl;
}

int func(float)
{
	cout << "func(float)" << endl;
}

//int func(double)
//{
//	cout << "func(double)" << endl;
//}

int func(int, int)
{
	cout << "func(int, int)" << endl;
}


class Ex{
public:
	void func(){
		cout << "Ex::fun()" << endl;
	}

	//Ex* const this
	void func(int){
		cout << "Ex::func(int)" << endl;
	}
	//Ex const * const this
	void func(int) const{
		cout << "Ex::func(int) const" << endl;
	}
};

int main(void)
{
	func(3);
	//func(1.1);				//func(double)
	
	return 0;
}
